package com.hyt.it.ogt.kq.common.gov.constant.examsys.gce;

import com.hyt.it.ogt.kq.common.config.ConfigManager;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * <p>
 * GCE考试系统上传文件类型枚举(GCE)
 * </p>
 *
 * @author huangyh
 * @since 2022-02-17
 */
@Getter
@Component
public class GCEUploadConstant {

    /**
     * 全局配置
     */
    private static ConfigManager configManager;

    @Autowired
    public void setConfig(ConfigManager config) {
        //注入全局配置
        configManager = config;
    }

    /**
     * 路径分隔符
     */
    public static final String DIRECTORY_SEPARATOR = "/";

    /**
     * GCE考试系统上传文件接口名称
     */
    public static final String INTERFACE_NAME = "gceUpload";

    /**
     * 上传文件类型：考试结果
     */
    public static final String UPLOAD_TYPE_RESULT = "result";

    /**
     * 上传文件类型：监考端配置备份信息
     */
    public static final String UPLOAD_TYPE_MONITOR_BACKUP = "monitorSettingBackup";

    /**
     * 获取考试结果上传路径(华为云OBS半路径)
     * @param taskCode 考试任务编号
     * @param path 考试系统定义的路径
     * @return 考试结果上传路径
     * 考试系统定义的路径实例: /3/福建省_34/福州市_3401/福州市_340101/省住建厅金山办公区5楼机房_34010101/考场2_342_3_0215083854.cdp
     */
    public static String getResultPath(String taskCode, String path) {
        //存储规则：“根目录/任务编号/业务功能目录/具体的文件.xxx”
        return StringUtils.join(configManager.getCloudRootPath(), taskCode,
                DIRECTORY_SEPARATOR, configManager.getResultPath(), DIRECTORY_SEPARATOR, path);
    }

    /**
     * 获取监考端配置备份信息上传路径(华为云OBS半路径)
     * @param taskCode 考试任务编号
     * @param roomCode 考场编号
     * @return 监考端配置备份信息上传路径
     */
    public static String getMonitorSettingBackupPath(String taskCode, String roomCode) {
        //存储规则：“根目录/任务编号/业务功能目录/具体的文件.xxx”
        return StringUtils.join(configManager.getCloudRootPath(), taskCode, DIRECTORY_SEPARATOR,
                configManager.getMonitorBackupPath(), DIRECTORY_SEPARATOR, roomCode);
    }

}
